﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using log4net;

namespace Riel_Gestion
{
    public partial class FrmAgregarProveedor : Form
    {
        private static readonly ILog logger = LogManager.GetLogger(typeof(FrmAgregarProveedor));
        public FrmAgregarProveedor()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            rielDataSetTableAdapters.PROVEEDORESTableAdapter proveedor = new Riel_Gestion.rielDataSetTableAdapters.PROVEEDORESTableAdapter();

            if (datosValidos())
            {
                logger.Info("Agregando proveedor: " + txtCodProv.Text);

                //Logueo de datos del cliente
                logDatosFrm();

                int res = proveedor.Insert(int.Parse(txtCodProv.Text), txtNombre.Text, txtResp.Text, txtTelefono.Text, txtDireccion.Text, txtEmail.Text, txtOtros.Text);

                if (res > 0)
                {
                    logger.Info("Proveedor agregado correctamente");
                    MessageBox.Show("Proveedor agregado correctamente", "Agregar Proveedor", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

                if (res == 0)
                {
                    logger.Error("No se pudo agregar al proveedor");
                    MessageBox.Show("No se pudo agregar al proveedor", "Agregar Proveedor", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                this.Close();
            }
            else
            {
                FrmMain.showErrorDialog("No se agrego el proveedor " + txtCodProv.Text + ", existen datos invalidos");
            }
        }

        bool datosValidos()
        {
            foreach (Control c in errorProvider.ContainerControl.Controls)
                if (errorProvider.GetError(c) != "")
                    return false;
            return true;
        }

        private void logDatosFrm()
        {
            logger.Debug("Datos del proveedor a insertar:");
            logger.Debug("txtCodProv   : " + this.txtCodProv.Text);
            logger.Debug("txtNombre    : " + this.txtNombre.Text);
            logger.Debug("txtResp      : " + this.txtResp.Text);
            logger.Debug("txtTelefono  : " + this.txtTelefono.Text);
            logger.Debug("txtDireccion : " + this.txtDireccion.Text);
            logger.Debug("txtEmail     : " + this.txtEmail.Text);
            logger.Debug("txtOtros     : " + this.txtOtros.Text);
        }


        private void txtCodProv_Validating(object sender, CancelEventArgs e)
        {
            if (txtCodProv.Text == "")
            {
                errorProvider.SetError(txtCodProv, "Por favor ingrese un codigo de proveedor");
                return;
            }

            if (txtCodProv.Text.Length > 3)
            {
                errorProvider.SetError(txtCodProv, "Por favor ingrese un codigo de hasta 3 digitos");
                return;
            }

            int result;
            if (!int.TryParse(txtCodProv.Text, out result))
            {
                errorProvider.SetError(txtCodProv, "Solo se aceptan caracteres numericos");
                return;
            }

            //Si esta todo ok:
            errorProvider.SetError(txtCodProv, "");
        }
    }
}
